from 期末项目.teacher.teacher import Teacher
class TeacherSystem(object):
    #   1、创建构造方法，构造方法内部创建一个列表tea_list
    def __init__(self):
        self.tea_list = []
    #   2、创建一个run方法
    def run(self):
        #  从文件内部加载数据

        while True:
        #  显示所有的可选择功能
            self.xianshi()
        #  设置一个选择变量，用键盘输入选择，并且把选择转换为整数
            xz = int(input("请输入你想要选择的序号："))
            if xz == 1:
                self.add_tea()
            elif xz == 2:
                self.del_tea()
            elif xz == 3:
                self.up_tea()
            elif xz == 4:
                self.seOne_tea()
            elif xz == 5:
                self.seAll_tea()
            elif xz == 6:
                self.save()
            elif xz == 7:
                break

    def xianshi(self):
        print("1、增加教师功能")
        print("2、删除教师功能")
        print("3、修改教师功能")
        print("4、查询一个教师功能")
        print("5、查询全部教师功能")
        print("6、保存数据到文件功能")
        print("7、从文件加载数据功能")

    # 增加功能
    def add_tea(self):
        name =input("请输入你的姓名:")
        age =input("请输入你的年龄:")
        gender =input("请输入你的性别:")
        id =input("请输入你的工号:")
        course =input("请输入你的课程名称:")
        teacher = Teacher(name,age,gender,id,course)
        self.tea_list.append(teacher)
        print("下面是列表内部的数据:")
        for i in self.tea_list:
            print(i)

    def del_tea(self):
        # 1、判断列表内部有没有数据，没有数据就输出列表内部无数据
        if len(self.tea_list) == 0:
            print("列表内部没有数据!!!!")
        # 2、键盘输入要删除教师的id
        else:
            xz = input("请输入想要删除的教师id:")
        # 3、便利列表，判断列表内部是否有教师的id和我们输入的id一致，一致就删除
            for i in self.tea_list:
                if i.id == xz:
                    self.tea_list.remove(i)
        #    没有就输出没找到数据
                else:
                    print("没有找到你想要寻找的教师")
        # 4、便利列表，查看删除之后的列表内容
        print("下面是删除后的教师列表数据")
        for i in self.tea_list:
            print(i)

    def up_tea(self):
        # 1、判断列表内部有没有数据，没有数据就输出列表内部无数据
        if len(self.tea_list) == 0:
            print("列表内部没有数据!!!!")
        # 2、键盘输入要修改教师的id
        else:
            xz = input("请输入想要修改的教师id:")
        # 3、便利列表，判断列表内部是否有教师的id和我们输入的id一致，一致就给属性重新赋值
            for i in self.tea_list:
                if i.id == xz:
                    i.name = input("请输入你想要修改的姓名：")
                    i.age = input("请输入你想要修改的年龄：")
                    i.gender = input("请输入你想要修改的性别：")
                    i.id = input("请输入你想要的修改教师工号：")
                    i.course = input("请输入你想要修改的课程名称：")
        #    没有就输出没找到数据
                else:
                    print("没有找到你想要寻找的教师")
        # 4、便利列表，查看修改之后的列表内容
            print("下面是修改后的教师列表数据:")
            for i in self.tea_list:
                print(i)

    def seOne_tea(self):
        if len(self.tea_list) == 0:
            print("列表内部没有数据!!!!")
        else:
            xz = input("请输入想要查询的教师id:")
            for i in self.tea_list:
                if i.id == xz:
                    print(i)
                else:
                    print("没有找到你想要寻找的教师")

    def seAll_tea(self):
        for i in self.tea_list:
            print(i)

    def save(self):
        # 打开文件
        f = open("teacher.data","w",encoding="UTF-8")
        # 把列表内部的数据转换为字典
        new_list = [i.__dict__ for i in self.tea_list]
        # 把字典数据转换为字符串类型
        a = str(new_list)
        f.write(a) # 把字符串数据写入文件
        f.close() # 关闭文件

    def load(self):
        try:
            f = open("teacher.data", "r", encoding="UTF-8")
        except:
            f = open("teacher.data", "w", encoding="UTF-8")
        else:
            # 读取文件内部数据
            data = f.read()
            # 把读取出来的数据从字符串类型转换为字典类型
            new_list = eval(data)
            # 把字典数据放到列表里面
            self.tea_list = [Teacher(i['name'], i['age'],
                                     i['gender'], i['id'],i['course'])
                             for i in new_list]